package site.jlopen.kuscia.service.job;

import java.util.List;

import site.jlopen.kuscia.entity.GrpcApiInfo;
import site.jlopen.kuscia.model.job.JobStatusResponeVo;
import site.jlopen.kuscia.model.job.TaskInfo;

public abstract class AbstractJobManager {

	/**
	 * <strong>创建 Job</strong>
	 * 
	 * @author ChenJiaLu
	 * @date 2024年7月13日 下午2:57:01
	 */
	public abstract boolean createJob(GrpcApiInfo apiInfo, String jobId, String initiator, List<TaskInfo> tasks);

	/**
	 * <strong>查询 Job</strong>
	 * 
	 * @author ChenJiaLu
	 * @date 2024年7月13日 下午2:57:01
	 */
	public abstract JobStatusResponeVo queryJob(GrpcApiInfo apiInfo, String jobId);

	/**
	 * <strong>批量查询 Job 状态</strong>
	 * 
	 * @author ChenJiaLu
	 * @date 2024年7月13日 下午2:57:01
	 */
	public abstract void batchQueryJobStatus(GrpcApiInfo apiInfo, List<String> jobIds);

	/**
	 * <strong>删除 Job</strong>
	 * 
	 * @author ChenJiaLu
	 * @date 2024年7月13日 下午2:57:01
	 */
	public abstract void deleteJob(GrpcApiInfo apiInfo, String jobId);

	/**
	 * <strong>停止 Job</strong>
	 * 
	 * @author ChenJiaLu
	 * @date 2024年7月13日 下午2:57:01
	 */
	public abstract void stopJob(GrpcApiInfo apiInfo, String jobId);

	/**
	 * <strong>监听 Job</strong>
	 * 
	 * @author ChenJiaLu
	 * @date 2024年7月13日 下午2:57:01
	 */
	public abstract void watchJob(GrpcApiInfo apiInfo);

	/**
	 * <strong>审批 Job</strong>
	 * 
	 * @author ChenJiaLu
	 * @date 2024年7月13日 下午2:57:01
	 */
	public abstract void approveJob(GrpcApiInfo apiInfo);

	/**
	 * <strong>暂停 Job</strong>
	 * 
	 * @author ChenJiaLu
	 * @date 2024年7月13日 下午2:57:01
	 */
	//public abstract void SuspendJob(GrpcApiInfo apiInfo);

	/**
	 * <strong>重跑 Job</strong>
	 * 
	 * @author ChenJiaLu
	 * @date 2024年7月13日 下午2:57:01
	 */
	public abstract void restartJob(GrpcApiInfo apiInfo, String jobId);

	/**
	 * <strong>取消 Job</strong>
	 * 
	 * @author ChenJiaLu
	 * @date 2024年7月13日 下午2:57:01
	 */
	//public abstract void CancelJob(GrpcApiInfo apiInfo);
}
